Robot welders are automated welding machines which operate under the control of a microprocessor. They are being used in more and more applications because they provide several advantages with respect to human welders. Some, but not all, of the advantages are that they do not need to take breaks, they can tolerate adverse environmental conditions, they can work in very tight areas, and they yield a consistent, quality weld.
However, a robot, like a human, must be told what to weld. A program for a robot welder can be written which specifies the exact spot or line that must be welded. Typically, an operator specifies the starting point of a weld and the length of the weld or the ending point of the weld. This information is given in precise coordinates, for example, start at point x=1.05 inches, y=1.77 inches, and z=0.0 inches and end at x=2.00 inches, y=2.00 inches, and z=0.5 inches. In this case the robot will weld on a seam defined by a line between the given starting and ending points. This procedure is simple and straightforward, but is very time consuming because the operator must determine the starting and ending points of the weld. This procedure is also prone to errors because the operator must manually enter these starting and ending points into the program and the operator may make errors in measuring the points or in entering the points into the program. Further, some points may be difficult or impossible for the operator to measure manually.
The robots have sensing devices, often referred to as touch sensors, which indicate that contact has been made with an object. In welding environments, the workpiece is typically a conductive material, such as iron or steel. Therefore, in these environments, the touch sensor is often the tip of the welding torch, or the welding wire, and the robot senses when the tip or wire has reached the workpiece by simply monitoring the output voltage or current at the tip or wire. When contact is made, the output voltage will drop and the output current will increase. The operator can therefore operate the robot to determine the coordinates of the starting and ending points of the weld, and then enter these coordinates into a welding program. This procedure is simple and straightforward, but is also very time consuming and prone to errors because, even through the robot makes the measurements precisely, the operator may make errors in entering the measurements.
Thus, each weld requires a substantial amount of attention by the operator. In some cases, the amount of time required to determine the coordinates of the weld and enter the points into the welding program can easily exceed the amount of time required for the robot to perform the weld. Also, because of human measurement and data entry, errors are quite possible. Therefore, there is a need for a method of operating a robot welder so as to reduce or eliminate the amount of attention required from the operator.
Further, once a welding program is written it will generally be useful for only one specified weld. That is, as long as the coordinates of the welds are identical (same starting and ending points(, then the robot will faithfully repeat the weld. This is most useful on assembly lines where the robot performs the same welding operation on each workpiece which comes down the assembly line. However, if the coordinates of the welds are not identical then a different program is required. This may occur where one robot is required to make several welds on the same workpiece. Thus, the amount of memory required to store the several programs necessary for multiple welding operations can be substantial or even beyond the capability of the robot.
Robot welders, although useful, do only what the programmer instructs them to do. This is of little concern if there is only one robot performing a welding operation because, other than hitting the workpiece, there is little danger of the robot hitting anything. However, speed of assembly is frequently a customer requirement so it would be beneficial if two or more robots could be assigned to weld on the same workpiece at the same time. The problem with two or more robot welders is that they may try to occupy the same space at the same time. Two humans assigned to perform conflicting welding operations may be able to discuss and resolve the problem among themselves. They may also contact a supervisor to determine whose work will be done first. However, robots do not have the capability to recognize that a problem exists, much less discuss and resolve the problem or seek the guidance of a superior authority. Therefore, each robot follows its own program, mindless of the presence of any other robot. The result at some point, with some programs, will be a collision. The resulting damage to the robots and possibly even the workpiece can be extensive and expensive, and can cause serious delays.
It is difficult, if not impossible, to known in advance of the performance of an operation whether or not there will be a collision between the two robots. When programming a robot to perform a welding operation, the operator may specify a series of points to which the robot must move, with or without specifying exactly how the robot will get there. However, the microprocessor which controls the robot has its own set of manufacturer-installed operating instructions as to how the robot should operate. This problem is compounded by the fact that a robot typically has numerous degrees of freedom. For example, the Panasonic industrial robot model AW-010A has 6 degrees of freedom (rotation, upper arm, front arm, rotating wrist, bending wrist, twisting wrist), and two directions of linear motion (forward-backward, up-down). The particular moves generated by these operating instructions are frequently not the same moves, or in the same sequence, that the operator would have thought to use to accomplish the same result. Therefore, even if the operator specifies that a robot is to go from one point to another point, the operator has no information on what motions the robot may implement to do so. Further, the operator may have to particularly specify parts of the sequence to get the welding torch in the right position and at the right angle while avoiding parts of the workpiece, for example, an overhanging flange from a T-beam.
This problem is made worse if one attempts to simultaneously operate more than one robot on the same workpiece. None of the robots knows, or has the capability to know, where the other robots are located, what the other robots are doing, what the other robots are preparing to do, or how the other robots are going to accomplish whatever their next actions may be. Therefore, in the past, the only certain ways to avoid a collision were to put only a single robot on a workpiece, or to space the robots far enough apart to where it was impossible for one robot to intrude into the operating area of another robot. However, a single robot provides for slow operation. Further, in some situations, the small size of the workpiece may prevent spacing the robots such that they cannot hit each other. Also, operating space is like any other resource; it has a value and should be conserved whenever possible. There is therefore a need for a method which provides for simultaneous operation of the robots in close proximity to each other while preventing the collisions which, with the current state of the art, are probable.
A sophisticated spatial analysis computer program could be used to generate a computer model of each robot and the workpiece and perform a mathematical computation to determine if any robot will attempt to occupy the same space as any other robot at the same time. However, such a program is expensive and requires a substantial amount of time for programming of the dimensions and variables. Such a program is also very computation-intensive and requires a large amount of memory. This may tie up the resources of a company which as its own computer, or increase the computer time rental costs for a company. Furthermore, a spatial analysis program may not have been written for the particular processor being used to control a robot. In addition, there may be inadequate time, at a processing speed which is not cost prohibitive, to perform the calculations in real time. Also, any change to any program may require running the analysis again to verify that the change has not caused a collision.
Welding robots typically have current sensors associated with each driving motor. Therefore, if the robot contacts an object and a driving motor stalls out, then the current will increase. This feature is often referred to as an amp-out condition and can be used to determine if the robot has hit an object or another robot. However, at the speeds at which robots operate, the damage will still be serious. It is, of course, possible to program the robots to move at a very slow rate so that the amp-out condition can be used to determine if a collision is occurring and to stop movement of the robots so that the collision will not cause further damage. However, this only prevents further damage, it does not prevent any damage caused by the initial contact nor resolve the original problem: both robots trying to be in the same space at the same time. Also, by moving at this slow speed, the time needed for a welding operation is greatly increased. Further, the slow movement approach is only useful for positioning. A welding operation must usually occur at a predetermined speed. Moving the robot arm at a slower speed during a welding operation may result in the workpiece being damaged by excessive heat. The workpiece may be warped or even burned through, or an excessively large welding bead may be deposited. Therefore, there is a need for a method of operating robot welders in a manner which avoids collisions between the robots.
Before beginning a welding operation, the robot must know how to get the torch into the compartment in which the welding operation is to be performed. This can be done by the operator, by manually measuring the coordinates, or by manually positioning the robot in the compartment. However, manual measurement of the coordinates is time prone to errors, and manual positioning is time consuming. In many cases, the workpiece is designed using a computer aided design (CAD) program. This CAD program contains information which could be used to determine the entry point into a compartment for the torch. This would eliminate the need for manual measurement or control, would improve speed, and would eliminate errors. Therefore, there is a need for a method for specifying a compartment entry point for a welding operation based upon data provided from a CAD program.
Even after the torch is guided into the compartment in which a welding operation is to be performed, the starting and ending points of the weld must be determined. This can be done by the operator, by manually measuring the coordinates, or by manually positioning the torch to determine the coordinates, and then loading these coordinates into the robot. However, these procedures are time consuming and may introduce errors. Some robots have a "touch-sensing" capability. That is, the ability to locate the boundaries or walls which limit the operation area of the robot. This capability could be used to define the coordinates of the weld. Therefore, there is a need for a method for automatically determining the starting and ending coordinates of a weld. There is also a need for a method for automatically determining the starting and ending coordinates of a weld using the touch-sensing capability of the robot.
Programming a robot by going out on the shop floor and using a pendant to teach the robot the steps necessary for the welding operation is useful, but is time consuming and, therefore, inefficient and expensive. Further, it requires the operator to go into an environment which is not climate controlled. If the weather is particularly adverse then the time that the operator can sped on the shop floor may be very limited. To circumvent this problem, some facilities use programmers to write the welding program by looking at the CAD design, rather than by going out on the shop floor. The programmer is thus in a climate-controlled environment and is not affected by the weather. However, this approach is often unsuccessful on the first attempt at programming. This occurs because there are limits on the agility of a robot. The robot may be able to turn its wrist through most of, all of, or even slightly more than, a 360 degree arc but there will be a limit. This limit condition is installed in the robot by the manufacturer and prevents excessive turning so that wires, hoses, and cables do not get wrapped around the robot arm and/or broken. If this limit is implemented by software it is frequently referred to as a soft limit condition and if it is implemented by hardware, such as a switch, it is frequently referred to as a hard limit condition. If a program instructs the robot to move more than the soft limit conditions allows, the soft/hard limit causes the robot to disregard the program instruction. A programmer may unknowingly write a program which attempts to cause the robot to exceed a limit conditions. When the offending program instruction is reached then the robot simply stops operating. The programmer may have to run the program several times to determine why the robot stopped. Then, the programmer will have to modify or completely rewrite the program in order to avoid reaching the limit switch condition. In some cases, the programmer may have to modify or rewrite the program by going out on the shop floor and using the pendant. There is therefore a need for a method of generating a welding program which avoids the limit switch problem and which also prevents the operator from having to go to the shop floor for the programming.
Before the welding operation is performed, the angle of attack of the torch of the robot must be specified. There is an optimum angle of attack for most welding operations. However, merely specifying that angle in the welding job for a robot is not useful because the compartment in which the welding is to be done may be too deep, or have a beam with too much of a flange overhang, to obtain the desired angle of attack and the robot may merely jam the torch into the workpiece in a vain attempt to achieve the desired angle of attack. Therefore, there is a need for a method for automatically determining the positioning of a torch to provide for an optimum angle of attack for a welding operation.
Further, the optimum angle of attack for the torch is not fixed, even for a known compartment design. If the orientation (pitch or roll) of the compartment is changed then the optimum angle of attack for the torch will vary to compensate for the tendency of the molten metal to flow downhill. Also, if one takes the program for a compartment which has no pitch (inclination) and tires to use the program for a compartment which has some pitch, the robot may be able to get into position to start the weld but may encounter a limit condition as the robot attempts to perform the weld. Thus, a different orientation (yaw, pitch, roll) may require the robot to use a different approach path in order to get the torch into the compartment and be able to complete the weld. Therefore, there is a need for a method for generating a program which is responsive to the orientation of the workpiece.
Once the robot has successfully placed the torch within the desired compartment and the torch is positioned at the best available angle of attack, the robot must move the torch along the joint of the pieces to be welded together. Point-to-point specifications are very useful if the joint is along a straight line. However, if the joint is along a curve or bend, or there is a change in the direction of the joint, then point-to-point specifications become less useful. Attempting to create a curve by a series of point-to-point specifications is time consuming and also prone to errors because the ending point of one path must precisely correspond to the starting point of the next path. Also, if the curve is severe, then numerous point-to-point specifications may be necessary to simulate the curve closely enough to keep the torch on the joint. There exists a method for automatically tracking the joint for a welding seam where the seam is a joint between two planar surfaces. However, in some cases, the weld to be made is not a joint between two planar surfaces but is a joint between two perpendicular surfaces. The prior art seam tracking method frequently fails to provide the desired results in the case of perpendicular surfaces. Therefore, there is a need for a method for automatically tracking the seam between two perpendicular surfaces.
In some cases, the weld to be made is not a joint between two surfaces but, rather, is simply a welding bead placed along the edge of a piece to eliminate the rough edge, or provide for rust prevention, or provide a better edge for a later welding operation, etc. As in the case of a seam, point-to-point specifications are very useful if the edge is a straight line. However, if the edge is curved or bent, or there is a change in the direction of the edge, then point-to-point specifications become less useful. Attempting to create a curve by a series of point-to-point specifications is time consuming and also prone to errors because the ending point of one path must precisely correspond to the starting point of the next path. Also, if the curve is severe, then numerous point-to-point specifications may be necessary to simulate the curve closely enough to keep the torch on the edge. Therefore, there is a need for a method for automatically tracking the edge of a component so that a welding bead can be applied to the edge.